//立即执行函数
//声明函数
//调用函数
(function() {
    //为了防止循环调用而制造临时函数对象,对外不公开
    var jQueryTrue = function(selector) {
        var doms = document.querySelectorAll(selector);
        for (var i = 0; i < doms.length; i++) {
            this[i] = doms[i];
        }
        this.length = doms.length;
        return this;
    }
    var jQuery = function(selector) {
        return new jQueryTrue(selector);
    }; //jquery函数对象

    jQueryTrue.prototype = jQuery.fn = jQuery.prototype; //给jQuery的prototype一个别名,方便调用
    jQuery.extend = jQuery.fn.extend = function() {
        var args = arguments;
        var i = 1;
        var target = args[0]; //默认是第一个对象
        if (args.length < 1) { //只有参数数量为0的情况下，直接返回this
            return this;
        } else if (args.length == 1) { //只有参数数量为1的情况下，把target改成this
            target = this; //如果jQuery.extend  this  --jquery
            i = 0; //如果jQuery.fn.extend  this  --jquery.fn
        }
        for (; i < args.length; i++) {
            var dest = args[i];
            for (pName in dest) {
                target[pName] = dest[pName]
            }
        }
        return target;
    };

    window.$ = window.jQuery = jQuery

    //合并对象的函数
    //如果参数只有1个并且是对象的情况下
    //jQuery.extend({})   //把后面对象合并到jQuery
    //jQuery.fn.extend({})  //把后面的对象合并到jQuery.fn（jQuery.prototype）;
    //如果参数为多个对象情况下
    //把后面的对象合并到第一个对象中
})();